CREATE OR REPLACE PACKAGE BODY EDIV2.Pack_Aduana_Multiple AS
/******************************************************************************
   NAME:       Pack_Aduana_Multiple
   PURPOSE:

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        6/2/2013   Luis Antonio Lara Capetillo       Creacion del Paquete
******************************************************************************/

PROCEDURE  Aduana_MultipleInsertarModificar(pcomentarios VARCHAR2, pnidDocumento NUMBER, 
						pnidEmpresaDestino NUMBER, ptipoMovimiento NUMBER, pfInicio_Operacion VARCHAR2, 
						pfFin_Operacion VARCHAR2, preferencia VARCHAR2, preferencia_Aduana VARCHAR2, 
						pnidDocumento_Entrada NUMBER, pnidViaje NUMBER, pnidMuelle NUMBER, 
						pnidBuque NUMBER, pnombre_Muelle VARCHAR2, pnombre_Buque VARCHAR2, 
						pnidProveedor NUMBER, pnombre_Proveedor VARCHAR2, pnombre_Responsable VARCHAR2, 
						pnidTipoReglaDespacho NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   Aduana_Multiple
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO Aduana_Multiple
	           (nid, comentarios, nidDocumento, 
						nidEmpresaDestino, tipoMovimiento, fInicio_Operacion, 
						fFin_Operacion, referencia, referencia_Aduana, 
						nidDocumento_Entrada, nidViaje, nidMuelle, 
						nidBuque, nombre_Muelle, nombre_Buque, 
						nidProveedor, nombre_Proveedor, nombre_Responsable, 
						nidTipoReglaDespacho)
    VALUES     (seq_Aduana_Multiple.nextval, pcomentarios, pnidDocumento, 
						pnidEmpresaDestino, ptipoMovimiento, to_date(pfInicio_Operacion,'DD/MM/YYYY HH24:MI:SS'), 
						to_date(pfFin_Operacion,'DD/MM/YYYY HH24:MI:SS'), preferencia, preferencia_Aduana, 
						pnidDocumento_Entrada, pnidViaje, pnidMuelle, 
						pnidBuque, pnombre_Muelle, pnombre_Buque, 
						pnidProveedor, pnombre_Proveedor, pnombre_Responsable, 
						pnidTipoReglaDespacho);
  ELSE
    UPDATE Aduana_Multiple
    SET    comentarios=pcomentarios, nidDocumento=pnidDocumento, 
		nidEmpresaDestino=pnidEmpresaDestino, tipoMovimiento=ptipoMovimiento, fInicio_Operacion=to_date(pfInicio_Operacion,'DD/MM/YYYY HH24:MI:SS'), 
		fFin_Operacion=to_date(pfFin_Operacion,'DD/MM/YYYY HH24:MI:SS'), referencia=preferencia, referencia_Aduana=preferencia_Aduana, 
		nidDocumento_Entrada=pnidDocumento_Entrada, nidViaje=pnidViaje, nidMuelle=pnidMuelle, 
		nidBuque=pnidBuque, nombre_Muelle=pnombre_Muelle, nombre_Buque=pnombre_Buque, 
		nidProveedor=pnidProveedor, nombre_Proveedor=pnombre_Proveedor, nombre_Responsable=pnombre_Responsable, 
		nidTipoReglaDespacho=pnidTipoReglaDespacho
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_MultipleConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, comentarios, nidDocumento, 
						nidEmpresaDestino, tipoMovimiento, fInicio_Operacion, 
						fFin_Operacion, referencia, referencia_Aduana, 
						nidDocumento_Entrada, nidViaje, nidMuelle, 
						nidBuque, nombre_Muelle, nombre_Buque, 
						nidProveedor, nombre_Proveedor, nombre_Responsable, 
						nidTipoReglaDespacho
    FROM   Aduana_Multiple
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_MultipleDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pEncabezado OUT cursor_type,
                           pDatos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pEncabezado FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
           (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE  d.nid=pnidDocumento
    AND    d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, comentarios, nidDocumento, 
						nidEmpresaDestino, tipoMovimiento, fInicio_Operacion, 
						fFin_Operacion, referencia, referencia_Aduana, 
						nidDocumento_Entrada, nidViaje, nidMuelle, 
						nidBuque, nombre_Muelle, nombre_Buque, 
						nidProveedor, nombre_Proveedor, nombre_Responsable, 
						nidTipoReglaDespacho
    FROM   Aduana_Multiple
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_ComputoInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pdescripcion VARCHAR2, pmarca VARCHAR2, pmodelo VARCHAR2, 
						pserie VARCHAR2, pdestino VARCHAR2, puso VARCHAR2, 
						presponsable VARCHAR2, pnumero_Factura VARCHAR2, pobservaciones VARCHAR2, 
						, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Computo
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Computo
	           (nid, nidDocumento, nidAduanaMultiple, 
						descripcion, marca, modelo, 
						serie, destino, uso, 
						responsable, numero_Factura, observaciones, 
						)
    VALUES     (seq_Aduana_Multiple_Computo.nextval, pnidDocumento, pnidAduanaMultiple, 
						pdescripcion, pmarca, pmodelo, 
						pserie, pdestino, puso, 
						presponsable, pnumero_Factura, pobservaciones, 
						);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Computo
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		descripcion=pdescripcion, marca=pmarca, modelo=pmodelo, 
		serie=pserie, destino=pdestino, uso=puso, 
		responsable=presponsable, numero_Factura=pnumero_Factura, observaciones=pobservaciones
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Computo_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Computo_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_ComputoConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						descripcion, marca, modelo, 
						serie, destino, uso, 
						responsable, numero_Factura, observaciones, 
						
    FROM   ediv2.Aduana_Multiple_Computo
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_ComputoDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						descripcion, marca, modelo, 
						serie, destino, uso, 
						responsable, numero_Factura, observaciones, 
						
    FROM   ediv2.Aduana_Multiple_Computo
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_AvituallaInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pnidViaje NUMBER, pdescripcion VARCHAR2, pcantidad NUMBER, 
						pcosto NUMBER, pnombre_Embalaje VARCHAR2, pnidEmbalaje NUMBER, 
						, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Avitualla
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Avitualla
	           (nid, nidDocumento, nidAduanaMultiple, 
						nidViaje, descripcion, cantidad, 
						costo, nombre_Embalaje, nidEmbalaje, 
						)
    VALUES     (seq_Aduana_Multiple_Avitualla.nextval, pnidDocumento, pnidAduanaMultiple, 
						pnidViaje, pdescripcion, pcantidad, 
						pcosto, pnombre_Embalaje, pnidEmbalaje, 
						);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Avitualla
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		nidViaje=pnidViaje, descripcion=pdescripcion, cantidad=pcantidad, 
		costo=pcosto, nombre_Embalaje=pnombre_Embalaje, nidEmbalaje=pnidEmbalaje
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Avitualla_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Avitualla_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_AvituallaConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						nidViaje, descripcion, cantidad, 
						costo, nombre_Embalaje, nidEmbalaje, 
						
    FROM   ediv2.Aduana_Multiple_Avitualla
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_AvituallaDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						nidViaje, descripcion, cantidad, 
						costo, nombre_Embalaje, nidEmbalaje, 
						
    FROM   ediv2.Aduana_Multiple_Avitualla
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_DespachoInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pcantidad NUMBER, pnidEmbalaje NUMBER, pdescripcion VARCHAR2, 
						pdimensiones VARCHAR2, pnidViaje NUMBER, pregistroBuque VARCHAR2, 
						pfechaArribo VARCHAR2, pjustificacion VARCHAR2, ppedimento NUMBER, 
						pconocimiento VARCHAR2, pnidEmpresa NUMBER, pnumeroSerie VARCHAR2, 
						pnidTipoDespacho NUMBER, plugarDespacho VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Despacho
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Despacho
	           (nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidEmbalaje, descripcion, 
						dimensiones, nidViaje, registroBuque, 
						fechaArribo, justificacion, pedimento, 
						conocimiento, nidEmpresa, numeroSerie, 
						nidTipoDespacho, lugarDespacho)
    VALUES     (seq_Aduana_Multiple_Despacho.nextval, pnidDocumento, pnidAduanaMultiple, 
						pcantidad, pnidEmbalaje, pdescripcion, 
						pdimensiones, pnidViaje, pregistroBuque, 
						to_date(pfechaArribo,'DD/MM/YYYY HH24:MI:SS'), pjustificacion, ppedimento, 
						pconocimiento, pnidEmpresa, pnumeroSerie, 
						pnidTipoDespacho, plugarDespacho);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Despacho
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		cantidad=pcantidad, nidEmbalaje=pnidEmbalaje, descripcion=pdescripcion, 
		dimensiones=pdimensiones, nidViaje=pnidViaje, registroBuque=pregistroBuque, 
		fechaArribo=to_date(pfechaArribo,'DD/MM/YYYY HH24:MI:SS'), justificacion=pjustificacion, pedimento=ppedimento, 
		conocimiento=pconocimiento, nidEmpresa=pnidEmpresa, numeroSerie=pnumeroSerie, 
		nidTipoDespacho=pnidTipoDespacho, lugarDespacho=plugarDespacho
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Despacho_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Despacho_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_DespachoConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidEmbalaje, descripcion, 
						dimensiones, nidViaje, registroBuque, 
						fechaArribo, justificacion, pedimento, 
						conocimiento, nidEmpresa, numeroSerie, 
						nidTipoDespacho, lugarDespacho
    FROM   ediv2.Aduana_Multiple_Despacho
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_DespachoDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidEmbalaje, descripcion, 
						dimensiones, nidViaje, registroBuque, 
						fechaArribo, justificacion, pedimento, 
						conocimiento, nidEmpresa, numeroSerie, 
						nidTipoDespacho, lugarDespacho
    FROM   ediv2.Aduana_Multiple_Despacho
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_EmbarqueInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pdescripcion VARCHAR2, pcantidad NUMBER, pnidEmbalaje NUMBER, 
						pjustificacion VARCHAR2, pnombre_Embalaje VARCHAR2, pcosto NUMBER, 
						, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Embarque
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Embarque
	           (nid, nidDocumento, nidAduanaMultiple, 
						descripcion, cantidad, nidEmbalaje, 
						justificacion, nombre_Embalaje, costo, 
						)
    VALUES     (seq_Aduana_Multiple_Embarque.nextval, pnidDocumento, pnidAduanaMultiple, 
						pdescripcion, pcantidad, pnidEmbalaje, 
						pjustificacion, pnombre_Embalaje, pcosto, 
						);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Embarque
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		descripcion=pdescripcion, cantidad=pcantidad, nidEmbalaje=pnidEmbalaje, 
		justificacion=pjustificacion, nombre_Embalaje=pnombre_Embalaje, costo=pcosto
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Embarque_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Embarque_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_EmbarqueConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						descripcion, cantidad, nidEmbalaje, 
						justificacion, nombre_Embalaje, costo, 
						
    FROM   ediv2.Aduana_Multiple_Embarque
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_EmbarqueDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						descripcion, cantidad, nidEmbalaje, 
						justificacion, nombre_Embalaje, costo, 
						
    FROM   ediv2.Aduana_Multiple_Embarque
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_EmpresasInsertarModificar(pnidDocumento NUMBER, pnidEmpresa NUMBER, 
						pnidAduana_Multiple NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Empresas
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Empresas
	           (nid, nidDocumento, nidEmpresa, 
						nidAduana_Multiple)
    VALUES     (seq_Aduana_Multiple_Empresas.nextval, pnidDocumento, pnidEmpresa, 
						pnidAduana_Multiple);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Empresas
    SET    nidDocumento=pnidDocumento, nidEmpresa=pnidEmpresa, 
		nidAduana_Multiple=pnidAduana_Multiple
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Empresas_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Empresas_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_EmpresasConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidEmpresa, 
						nidAduana_Multiple
    FROM   ediv2.Aduana_Multiple_Empresas
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_EmpresasDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidEmpresa, 
						nidAduana_Multiple
    FROM   ediv2.Aduana_Multiple_Empresas
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_EtiquetadoInsertarModificar(pnidDocumento NUMBER, pnidAduanamulTiple NUMBER, 
						pnidAgenciaAduanal NUMBER, ppatente VARCHAR2, ppedimento VARCHAR2, 
						pdescripcion_Mercancia VARCHAR2, pcantidad NUMBER, pcontenedor VARCHAR2, 
						psello VARCHAR2, ptipo_Etiquetas VARCHAR2, pretencion VARCHAR2, 
						pnumero_Pama VARCHAR2, pnorma VARCHAR2, pnorma_Campo VARCHAR2, 
						pnidTipoUnidades NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Etiquetado
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Etiquetado
	           (nid, nidDocumento, nidAduanamulTiple, 
						nidAgenciaAduanal, patente, pedimento, 
						descripcion_Mercancia, cantidad, contenedor, 
						sello, tipo_Etiquetas, retencion, 
						numero_Pama, norma, norma_Campo, 
						nidTipoUnidades)
    VALUES     (seq_Aduana_Multiple_Etiquetado.nextval, pnidDocumento, pnidAduanamulTiple, 
						pnidAgenciaAduanal, ppatente, ppedimento, 
						pdescripcion_Mercancia, pcantidad, pcontenedor, 
						psello, ptipo_Etiquetas, pretencion, 
						pnumero_Pama, pnorma, pnorma_Campo, 
						pnidTipoUnidades);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Etiquetado
    SET    nidDocumento=pnidDocumento, nidAduanamulTiple=pnidAduanamulTiple, 
		nidAgenciaAduanal=pnidAgenciaAduanal, patente=ppatente, pedimento=ppedimento, 
		descripcion_Mercancia=pdescripcion_Mercancia, cantidad=pcantidad, contenedor=pcontenedor, 
		sello=psello, tipo_Etiquetas=ptipo_Etiquetas, retencion=pretencion, 
		numero_Pama=pnumero_Pama, norma=pnorma, norma_Campo=pnorma_Campo, 
		nidTipoUnidades=pnidTipoUnidades
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Etiquetado_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Etiquetado_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_EtiquetadoConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanamulTiple, 
						nidAgenciaAduanal, patente, pedimento, 
						descripcion_Mercancia, cantidad, contenedor, 
						sello, tipo_Etiquetas, retencion, 
						numero_Pama, norma, norma_Campo, 
						nidTipoUnidades
    FROM   ediv2.Aduana_Multiple_Etiquetado
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_EtiquetadoDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanamulTiple, 
						nidAgenciaAduanal, patente, pedimento, 
						descripcion_Mercancia, cantidad, contenedor, 
						sello, tipo_Etiquetas, retencion, 
						numero_Pama, norma, norma_Campo, 
						nidTipoUnidades
    FROM   ediv2.Aduana_Multiple_Etiquetado
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_MaterialInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						ptipo_Equipo NUMBER, ptipo_Material NUMBER, ptipo_Herramienta NUMBER, 
						pnombre_Propietario VARCHAR2, pdescripcion_Trabajos VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Material
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Material
	           (nid, nidDocumento, nidAduanaMultiple, 
						tipo_Equipo, tipo_Material, tipo_Herramienta, 
						nombre_Propietario, descripcion_Trabajos)
    VALUES     (seq_Aduana_Multiple_Material.nextval, pnidDocumento, pnidAduanaMultiple, 
						ptipo_Equipo, ptipo_Material, ptipo_Herramienta, 
						pnombre_Propietario, pdescripcion_Trabajos);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Material
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		tipo_Equipo=ptipo_Equipo, tipo_Material=ptipo_Material, tipo_Herramienta=ptipo_Herramienta, 
		nombre_Propietario=pnombre_Propietario, descripcion_Trabajos=pdescripcion_Trabajos
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Material_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Material_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_MaterialConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						tipo_Equipo, tipo_Material, tipo_Herramienta, 
						nombre_Propietario, descripcion_Trabajos
    FROM   ediv2.Aduana_Multiple_Material
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_MaterialDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						tipo_Equipo, tipo_Material, tipo_Herramienta, 
						nombre_Propietario, descripcion_Trabajos
    FROM   ediv2.Aduana_Multiple_Material
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_MaterialDetInsertarModificar(pnidAduanaMaterial NUMBER, pnidAduanaMultiple NUMBER, 
						pdescripcion VARCHAR2, pcantidad NUMBER, punidad VARCHAR2, 
						pdestino_Procedencia VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_MaterialDet
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_MaterialDet
	           (nid, nidAduanaMaterial, nidAduanaMultiple, 
						descripcion, cantidad, unidad, 
						destino_Procedencia)
    VALUES     (seq_Aduana_Multiple_MaterialDet.nextval, pnidAduanaMaterial, pnidAduanaMultiple, 
						pdescripcion, pcantidad, punidad, 
						pdestino_Procedencia);
  ELSE
    UPDATE ediv2.Aduana_Multiple_MaterialDet
    SET    nidAduanaMaterial=pnidAduanaMaterial, nidAduanaMultiple=pnidAduanaMultiple, 
		descripcion=pdescripcion, cantidad=pcantidad, unidad=punidad, 
		destino_Procedencia=pdestino_Procedencia
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_MaterialDet_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_MaterialDet_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_MaterialDetConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidAduanaMaterial, nidAduanaMultiple, 
						descripcion, cantidad, unidad, 
						destino_Procedencia
    FROM   ediv2.Aduana_Multiple_MaterialDet
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_MermasInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pcantidad NUMBER, pdescripcion VARCHAR2, pnidEmpresa NUMBER, 
						pporcentajeDelTotal NUMBER, pdestino VARCHAR2, pprocesoDestruccion VARCHAR2, 
						prazonSocial VARCHAR2, pcalle VARCHAR2, pcolonia VARCHAR2, 
						pno_Exterior NUMBER, pno_Interior VARCHAR2, pciudad VARCHAR2, 
						pestado VARCHAR2, pcp VARCHAR2, pcantidadEnbl NUMBER, 
						ppedimento NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Mermas
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Mermas
	           (nid, nidDocumento, nidAduanaMultiple, 
						cantidad, descripcion, nidEmpresa, 
						porcentajeDelTotal, destino, procesoDestruccion, 
						razonSocial, calle, colonia, 
						no_Exterior, no_Interior, ciudad, 
						estado, cp, cantidadEnbl, 
						pedimento)
    VALUES     (seq_Aduana_Multiple_Mermas.nextval, pnidDocumento, pnidAduanaMultiple, 
						pcantidad, pdescripcion, pnidEmpresa, 
						pporcentajeDelTotal, pdestino, pprocesoDestruccion, 
						prazonSocial, pcalle, pcolonia, 
						pno_Exterior, pno_Interior, pciudad, 
						pestado, pcp, pcantidadEnbl, 
						ppedimento);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Mermas
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		cantidad=pcantidad, descripcion=pdescripcion, nidEmpresa=pnidEmpresa, 
		porcentajeDelTotal=pporcentajeDelTotal, destino=pdestino, procesoDestruccion=pprocesoDestruccion, 
		razonSocial=prazonSocial, calle=pcalle, colonia=pcolonia, 
		no_Exterior=pno_Exterior, no_Interior=pno_Interior, ciudad=pciudad, 
		estado=pestado, cp=pcp, cantidadEnbl=pcantidadEnbl, 
		pedimento=ppedimento
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Mermas_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Mermas_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_MermasConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, descripcion, nidEmpresa, 
						porcentajeDelTotal, destino, procesoDestruccion, 
						razonSocial, calle, colonia, 
						no_Exterior, no_Interior, ciudad, 
						estado, cp, cantidadEnbl, 
						pedimento
    FROM   ediv2.Aduana_Multiple_Mermas
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_MermasDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, descripcion, nidEmpresa, 
						porcentajeDelTotal, destino, procesoDestruccion, 
						razonSocial, calle, colonia, 
						no_Exterior, no_Interior, ciudad, 
						estado, cp, cantidadEnbl, 
						pedimento
    FROM   ediv2.Aduana_Multiple_Mermas
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_MuestrasInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pdescripcion VARCHAR2, pcantidad NUMBER, plotes VARCHAR2, 
						ppedimento VARCHAR2, pnidEmpresa NUMBER, pnombre_Importador VARCHAR2, 
						pjustificacion VARCHAR2, pnidTipoUnidades NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Muestras
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Muestras
	           (nid, nidDocumento, nidAduanaMultiple, 
						descripcion, cantidad, lotes, 
						pedimento, nidEmpresa, nombre_Importador, 
						justificacion, nidTipoUnidades)
    VALUES     (seq_Aduana_Multiple_Muestras.nextval, pnidDocumento, pnidAduanaMultiple, 
						pdescripcion, pcantidad, plotes, 
						ppedimento, pnidEmpresa, pnombre_Importador, 
						pjustificacion, pnidTipoUnidades);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Muestras
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		descripcion=pdescripcion, cantidad=pcantidad, lotes=plotes, 
		pedimento=ppedimento, nidEmpresa=pnidEmpresa, nombre_Importador=pnombre_Importador, 
		justificacion=pjustificacion, nidTipoUnidades=pnidTipoUnidades
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Muestras_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Muestras_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_MuestrasConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						descripcion, cantidad, lotes, 
						pedimento, nidEmpresa, nombre_Importador, 
						justificacion, nidTipoUnidades
    FROM   ediv2.Aduana_Multiple_Muestras
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_MuestrasDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						descripcion, cantidad, lotes, 
						pedimento, nidEmpresa, nombre_Importador, 
						justificacion, nidTipoUnidades
    FROM   ediv2.Aduana_Multiple_Muestras
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_SellosInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pnidEmpresa NUMBER, pcantidad NUMBER, pespecificacion VARCHAR2, 
						pnidViaje NUMBER, ppeso NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Sellos
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Sellos
	           (nid, nidDocumento, nidAduanaMultiple, 
						nidEmpresa, cantidad, especificacion, 
						nidViaje, peso)
    VALUES     (seq_Aduana_Multiple_Sellos.nextval, pnidDocumento, pnidAduanaMultiple, 
						pnidEmpresa, pcantidad, pespecificacion, 
						pnidViaje, ppeso);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Sellos
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		nidEmpresa=pnidEmpresa, cantidad=pcantidad, especificacion=pespecificacion, 
		nidViaje=pnidViaje, peso=ppeso
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Sellos_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Sellos_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_SellosConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						nidEmpresa, cantidad, especificacion, 
						nidViaje, peso
    FROM   ediv2.Aduana_Multiple_Sellos
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_SellosDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						nidEmpresa, cantidad, especificacion, 
						nidViaje, peso
    FROM   ediv2.Aduana_Multiple_Sellos
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_ServicioExtraInsertar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						ppagado CHAR, poperacion VARCHAR2, ppatente VARCHAR2, 
						ppedimento NUMBER, pdescripcion VARCHAR2, pnumContenedor VARCHAR2, 
						precinto NUMBER, pplacas VARCHAR2, pmarcaModelo VARCHAR2, 
						psello VARCHAR2, prfc_Aportador VARCHAR2, prazonSocial_Aportador VARCHAR2, 
						pdomicilio_Aportador VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
BEGIN
  INSERT INTO ediv2.Aduana_Multiple_ServicioExtra(nid, nidDocumento, nidAduanaMultiple, 
						pagado, operacion, patente, 
						pedimento, descripcion, numContenedor, 
						recinto, placas, marcaModelo, 
						sello, rfc_Aportador, razonSocial_Aportador, 
						domicilio_Aportador)
  VALUES               (seq_Aduana_Multiple_ServicioExtra.nextval, pnidDocumento, pnidAduanaMultiple, 
						ppagado, poperacion, ppatente, 
						ppedimento, pdescripcion, pnumContenedor, 
						precinto, pplacas, pmarcaModelo, 
						psello, prfc_Aportador, prazonSocial_Aportador, 
						pdomicilio_Aportador);
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_ServicioExtra_Insertar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_ServicioExtra_Insertar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_ServicioExtraConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						pagado, operacion, patente, 
						pedimento, descripcion, numContenedor, 
						recinto, placas, marcaModelo, 
						sello, rfc_Aportador, razonSocial_Aportador, 
						domicilio_Aportador
    FROM   ediv2.Aduana_Multiple_ServicioExtra
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_ServicioExtraDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						pagado, operacion, patente, 
						pedimento, descripcion, numContenedor, 
						recinto, placas, marcaModelo, 
						sello, rfc_Aportador, razonSocial_Aportador, 
						domicilio_Aportador
    FROM   ediv2.Aduana_Multiple_ServicioExtra
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_Servicio_ConteInsertarModificar(pnidServicio NUMBER, pcontenedor VARCHAR2, 
						, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Servicio_Conte
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Servicio_Conte
	           (nid, nidServicio, contenedor, 
						)
    VALUES     (seq_Aduana_Multiple_Servicio_Conte.nextval, pnidServicio, pcontenedor, 
						);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Servicio_Conte
    SET    nidServicio=pnidServicio, contenedor=pcontenedor
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Servicio_Conte_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Servicio_Conte_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_Servicio_ConteConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidServicio, contenedor, 
						
    FROM   ediv2.Aduana_Multiple_Servicio_Conte
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_Servicio_ConteDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidServicio, contenedor, 
						
    FROM   ediv2.Aduana_Multiple_Servicio_Conte
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_SuministroInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pcantidad NUMBER, pnidTipoCombustible NUMBER, pdescripcion VARCHAR2, 
						pcapacidad_Tanques NUMBER, pnidTipoSuministro NUMBER, pnidBuque_Suministrado NUMBER, 
						pnombre_Suministrado VARCHAR2, pnidViaje NUMBER, pnidMuelle NUMBER, 
						pnombre_Muelle VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Suministro
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Suministro
	           (nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidTipoCombustible, descripcion, 
						capacidad_Tanques, nidTipoSuministro, nidBuque_Suministrado, 
						nombre_Suministrado, nidViaje, nidMuelle, 
						nombre_Muelle)
    VALUES     (seq_Aduana_Multiple_Suministro.nextval, pnidDocumento, pnidAduanaMultiple, 
						pcantidad, pnidTipoCombustible, pdescripcion, 
						pcapacidad_Tanques, pnidTipoSuministro, pnidBuque_Suministrado, 
						pnombre_Suministrado, pnidViaje, pnidMuelle, 
						pnombre_Muelle);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Suministro
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		cantidad=pcantidad, nidTipoCombustible=pnidTipoCombustible, descripcion=pdescripcion, 
		capacidad_Tanques=pcapacidad_Tanques, nidTipoSuministro=pnidTipoSuministro, nidBuque_Suministrado=pnidBuque_Suministrado, 
		nombre_Suministrado=pnombre_Suministrado, nidViaje=pnidViaje, nidMuelle=pnidMuelle, 
		nombre_Muelle=pnombre_Muelle
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Suministro_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Suministro_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_SuministroConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidTipoCombustible, descripcion, 
						capacidad_Tanques, nidTipoSuministro, nidBuque_Suministrado, 
						nombre_Suministrado, nidViaje, nidMuelle, 
						nombre_Muelle
    FROM   ediv2.Aduana_Multiple_Suministro
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_SuministroDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidTipoCombustible, descripcion, 
						capacidad_Tanques, nidTipoSuministro, nidBuque_Suministrado, 
						nombre_Suministrado, nidViaje, nidMuelle, 
						nombre_Muelle
    FROM   ediv2.Aduana_Multiple_Suministro
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_TraspaleoInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pnidAgenteAduanal NUMBER, ppatente VARCHAR2, pdescripcion_mercancia VARCHAR2, 
						ppeso NUMBER, pmarca VARCHAR2, pcontenedor_Origen VARCHAR2, 
						psello_Origen VARCHAR2, particulo23 VARCHAR2, pcontenedor_Destino VARCHAR2, 
						psello_Destino VARCHAR2, pnumero_Gafete VARCHAR2, pnidEmpresaRecinto NUMBER, 
						pnidTipoTraspaleo NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Traspaleo
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Traspaleo
	           (nid, nidDocumento, nidAduanaMultiple, 
						nidAgenteAduanal, patente, descripcion_mercancia, 
						peso, marca, contenedor_Origen, 
						sello_Origen, articulo23, contenedor_Destino, 
						sello_Destino, numero_Gafete, nidEmpresaRecinto, 
						nidTipoTraspaleo)
    VALUES     (seq_Aduana_Multiple_Traspaleo.nextval, pnidDocumento, pnidAduanaMultiple, 
						pnidAgenteAduanal, ppatente, pdescripcion_mercancia, 
						ppeso, pmarca, pcontenedor_Origen, 
						psello_Origen, particulo23, pcontenedor_Destino, 
						psello_Destino, pnumero_Gafete, pnidEmpresaRecinto, 
						pnidTipoTraspaleo);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Traspaleo
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		nidAgenteAduanal=pnidAgenteAduanal, patente=ppatente, descripcion_mercancia=pdescripcion_mercancia, 
		peso=ppeso, marca=pmarca, contenedor_Origen=pcontenedor_Origen, 
		sello_Origen=psello_Origen, articulo23=particulo23, contenedor_Destino=pcontenedor_Destino, 
		sello_Destino=psello_Destino, numero_Gafete=pnumero_Gafete, nidEmpresaRecinto=pnidEmpresaRecinto, 
		nidTipoTraspaleo=pnidTipoTraspaleo
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Traspaleo_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Traspaleo_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_TraspaleoConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						nidAgenteAduanal, patente, descripcion_mercancia, 
						peso, marca, contenedor_Origen, 
						sello_Origen, articulo23, contenedor_Destino, 
						sello_Destino, numero_Gafete, nidEmpresaRecinto, 
						nidTipoTraspaleo
    FROM   ediv2.Aduana_Multiple_Traspaleo
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_TraspaleoDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						nidAgenteAduanal, patente, descripcion_mercancia, 
						peso, marca, contenedor_Origen, 
						sello_Origen, articulo23, contenedor_Destino, 
						sello_Destino, numero_Gafete, nidEmpresaRecinto, 
						nidTipoTraspaleo
    FROM   ediv2.Aduana_Multiple_Traspaleo
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_VaciosInsertarModificar(pnidAduanaMultiple NUMBER, pnidDocumento NUMBER, 
						pnumeroContenedor VARCHAR2, pnidTipoContenedor NUMBER, ptipo_Contenedor VARCHAR2, 
						, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Vacios
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Vacios
	           (nid, nidAduanaMultiple, nidDocumento, 
						numeroContenedor, nidTipoContenedor, tipo_Contenedor, 
						)
    VALUES     (seq_Aduana_Multiple_Vacios.nextval, pnidAduanaMultiple, pnidDocumento, 
						pnumeroContenedor, pnidTipoContenedor, ptipo_Contenedor, 
						);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Vacios
    SET    nidAduanaMultiple=pnidAduanaMultiple, nidDocumento=pnidDocumento, 
		numeroContenedor=pnumeroContenedor, nidTipoContenedor=pnidTipoContenedor, tipo_Contenedor=ptipo_Contenedor
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Vacios_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Vacios_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_VaciosConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidAduanaMultiple, nidDocumento, 
						numeroContenedor, nidTipoContenedor, tipo_Contenedor, 
						
    FROM   ediv2.Aduana_Multiple_Vacios
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_VaciosDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidAduanaMultiple, nidDocumento, 
						numeroContenedor, nidTipoContenedor, tipo_Contenedor, 
						
    FROM   ediv2.Aduana_Multiple_Vacios
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_VehiculosInsertarModificar(pnidAduanaMultiple NUMBER, pnidDocumento NUMBER, 
						pplaca VARCHAR2, pmarca VARCHAR2, pmodelo VARCHAR2, 
						ptipoCargaPesada NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Vehiculos
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Vehiculos
	           (nid, nidAduanaMultiple, nidDocumento, 
						placa, marca, modelo, 
						tipoCargaPesada)
    VALUES     (seq_Aduana_Multiple_Vehiculos.nextval, pnidAduanaMultiple, pnidDocumento, 
						pplaca, pmarca, pmodelo, 
						ptipoCargaPesada);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Vehiculos
    SET    nidAduanaMultiple=pnidAduanaMultiple, nidDocumento=pnidDocumento, 
		placa=pplaca, marca=pmarca, modelo=pmodelo, 
		tipoCargaPesada=ptipoCargaPesada
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Vehiculos_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Vehiculos_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_VehiculosConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidAduanaMultiple, nidDocumento, 
						placa, marca, modelo, 
						tipoCargaPesada
    FROM   ediv2.Aduana_Multiple_Vehiculos
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_VehiculosDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type,
                           pDatos OUT cursor_type, pAnexos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
          (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE d.nid=pnidDocumento
    AND   d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidAduanaMultiple, nidDocumento, 
						placa, marca, modelo, 
						tipoCargaPesada
    FROM   ediv2.Aduana_Multiple_Vehiculos
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pAnexos FOR 
    SELECT ar.nombre, ta.nombre as tipo
    FROM   archivos ar  
    JOIN   tipo_archivo ta
    ON     ar.nidtipodearchivo=ta.nid
    AND    ar.niddocumento=pnidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

--otros

END Pack_Aduana_Multiple;
